The present invention relates in general to directory services and, more specifically, to a dynamic directory service that maintains a directory in which is stored both (1) directory information and (2) information identifying the physical layout or structure of the directory.
Computer-based structured storage systems, such as computer file systems and database systems, have been remarkably successful at providing users with quick and facile access to enormous amounts of data. Structured storage systems have allowed businesses to generate and maintain enormous stores of persistent data that the company can modify and update over the course of years. For many companies, this persistent data is a valuable capital asset that is employed each day to perform the company""s core operations. The data can be, for example, computer files (e.g., source code, wordprocessing documents, etc.), database records and information (e.g., information on employees, customers, and/or products), and/or Web pages.
A typical computer based structured storage system includes a central server that provides centralized control over the structured store of data. The structured store of data is the information that is being maintained by the system, such as information in the files and directories of a file system or within the records of a database system. The central server provides system services to a plurality of interconnected network client nodes, and each of the client nodes employs the central server to access and manipulate the structured store of data.
It is common to use the central network server to provide a directory service, i.e., a specialized hierarchical database of network, user, and other computer system configuration information. This information typically includes operating system configuration information, application program configuration information, network configuration information, network-accessible resources, exported devices and services, network printers, and user account records. Network user account records are what allow network-wide, unified xe2x80x9clog on,xe2x80x9d and they allow sophisticated application programs to obtain broader, coherent name spaces (e.g., electronic mail system application programs). Novell""s Directory Server (NDS), available from Novell, Inc. of Provo, Utah, is one example of software that implements a directory service and that runs on a central server to allow maintenance of and access to directory information.
Although central server directory services such as NDS generally work, problems arise from relying on centralized control. For example, the operation of the network is dependent upon the proper functioning of the central server. Any failure of the server to maintain proper operation, such as a power failure, hardware failure, or other such system failure, will disable the entire network and generally prevent users from obtaining access to the network and its resources. Additionally, a flood of client requests (e.g., access of user account records) can overload the central server and slow down or crash the network. Accordingly, reliance on a centralized, server-based directory service can result in slow operation or total network failure during periods of heavy use.
An additional problem with a client-server network system is that it provides a static operating environment that is set for optimal performance at a certain level of network activity. Consequently, the network fails to exploit available resources to improve system performance. In particular, as the system activity rises above or drops below the expected level of network activity, the static operating environment lacks any ability to reconfigure dynamically the allocation of network resources to one providing better performance for the present level of activity.
Technology has been developed to improve the reliability and operation of a centralized server directory service. This technology involves employing a plurality of central servers. Each of the servers provides a directory service. Whenever the directory information changes, all of the redundant servers are updated so that requests can be made to any of the centralized servers without impacting the correctness of the response.
While this statically replicated technology improves upon the single server arrangement, it generally performs poorly or fails as the size of the network increases. As client nodes are added to the network and more directory servers are added to the network to handle the corresponding increased network load, the sustainable update rate of information managed by the servers decreases because the overhead and complexity of propagating updates (i.e., changes to the data stored in and replicated across the directory servers) increases with the increased network size. Thus, known directory services are inherently read-mostly repositories, and that is the way they are designed and used. That is, known directory services are used only for infrequently-updated directory information.
Examples of this centralized, statically replicated, hierarchical directory service technology include Microsoft""s Active Directory (NT 5.0), NDS, Banyan""s Streetalk, and X.500 directory services. Lightweight Directory Access Protocol (LDAP) is a xe2x80x9ccommonxe2x80x9d protocol that can be used to access data from any compatible directory server such as NDS.
It is an object of the invention to provide a dynamic directory service that is an improvement over centralized, statically replicated, hierarchical database directory services.
It is also an object of the invention to provide a dynamic directory service that maintains a directory in which is stored both (1) directory information and (2) the physical layout of the directory itself. That is, the invention involves the use of a directory having both information about where to find the directory information of interest as well as the actual directory information.
It is a further object of the invention to provide a dynamic directory service that is more reliable and provides improved fault tolerant operation over existing directory services, and that has the ability to replicate and move data dynamically in response to network activity levels and access patterns. This ability optimizes performance and minimizes the time required to provide directory information (e.g., network configuration information, organizational information, user configuration information, and network-accessible resources such as exported devices and services, network printers, and user account records) to requesting network nodes.
It is yet another object of the invention to provide a dynamic directory service that provides distributed control over a structured store of directory information and that allows that information to be changed and/or updated with higher frequency than generally possible with existing directory services without adversely effecting network performance or network node access times.
It is still another object of the invention to provide a dynamic directory service that maintains and allows access to frequently-changing, as well as infrequently-changed, directory information.
The directory service of the invention maintains both the physical location information and the directory information itself in the same data structure. That data structure is distributed around the network, and all of the directory information is homeless (except, usually, a root record). The distributed directory service of the invention allows network nodes to locate copies of records to which the nodes want access. A globally unique identifier (GUID) is associated with each record as a unique index key that can be used to identify the record on the network. It contains no location information, and a given record can be physically located anywhere on the network. Each of the records also can migrate from physical location (node) to physical location (node) around the network. The invention provides automatic migration and/or replication of directory information among the network nodes without reconfiguring the network nodes and in a manner transparent to users at the nodes. An example of a mechanism that can be used to keep replicated records consistent is a single-writer, multiple-reader, write-invalidate protocol.
The directory service of the invention can, in some specific embodiments, employ a globally-addressable unstructured memory system to maintain simultaneously both the directory information and layout information in accordance with the invention. For example, the directory service can employ the distributed shared memory (DSM) system described in the above-identified, incorporated-by-reference patent applications, which DSM system distributes the storage of data across some or all of the storage devices connected to a network. Storage devices that may be connected to the network and accessible to the network nodes by address via the DSM system include, for example, RAM, hard disk drives, tape drives, floppy disk drives, and CD-ROM drives. In some embodiments, the dynamic directory service is a computer program that interfaces to a DSM system to operate the DSM system as a memory device that provides storage of and access to the directory information. The directory service program can direct the DSM system to map directory information into the shared memory space. The DSM system can include functionality to share, migrate, and replicate data coherently. In one embodiment, the DSM system provides memory device services to the directory service program. These services can include read, write, allocate, flush, or any other similar or additional service suitable for providing low level control of a storage device. The directory service program employs these DSM system services to allocate and access portions of the shared memory space for creating and manipulating the directory information. In connection with these embodiments, a system and related method for accessing directory information includes a computer network, a globally addressable data storage system, and a plurality of computers coupled to the network and the data storage system. The globally addressable data storage system provides persistent storage of data and contains directory information. The plurality of computers access the data storage system to obtain directory information. Based on the access patterns by the computers and/or the available network resources, the data storage system replicates and migrates directory information among two or more of the computers.
In one aspect, the invention relates to a method comprising the steps of providing a plurality of nodes interconnected by a network and storing on one or more of the nodes a directory containing both the directory information and information about the layout of the directory (i.e., where to find the directory information).
In another aspect, the invention relates to a method comprising the steps of providing a plurality of nodes interconnected by a network, providing a directory service on the network by installing on each of the nodes a directory service program that allows directory information to be accessed by each of the nodes and that stores on one or more of the nodes a directory including both the directory information and information about the location of the directory information on the network, and obtaining both the physical location of directory information of interest and the directory information of interest itself by accessing the directory service.
The foregoing and other objects, aspects, features, and advantages of the invention will become more apparent from the following description and from the claims.